package com.blog.dao;

import com.blog.pojo.Article;

import java.util.List;
import java.util.Map;

public interface ArticleDao {

    /**
     * 查询所有的文章
     * @return
     */
    List<Article> getAllArticles();

    /**
     * 查询最近的10篇文章
     * @return
     */
    List<Article> getTop10Articles();


    /**
     * 查询文章的分类 和 该分类下文章数
     * @return
     */
    Map<String,Integer> getArticleSortAndCount();


    /**
     * 查询阅读量最高10篇文章
     * @return
     */
    List<Article> getTop10VisitArticles();


    /**
     * 根据文章分类查询文章集合
     * @param sort
     * @return
     */
    List<Article> getArticlesBySort(String sort);


    /**
     * 根据文章Tag查询文章集合
     * @param tagName
     * @return
     */
    List<Article> getArticlesByTagName(String tagName);


    /**
     * 获取文章年份
     * @return
     */
    List<String> getArticlesYears();


    /**
     * 根据文章年份查询文章集合
     * @param year
     * @return
     */
    List<Article> getArticlesByYears(String year);


    /**
     * 根据ID查询
     * @param id
     * @return
     */
    Article getById(String id);

    Article getPreArticle(Integer id);

    Article getNextArticle(Integer id);


    int updateVisitCount(String id);

    int add(Article article);

    /**
     * 查询最近新增的文章
     * @return
     */
    Article getLastedArticle();

    int deleteById(String articleId);

    int deleteSort(String sortName);

    int updateCommentCount(String mark, String id);

    /**
     * 点赞数加一
     * @param articleId  文章的id
     * @return
     */
    int addStar(String articleId);

    int edit(Article article);

    int editSort(String sortName, String newSort);
}
